package com.hc.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hc.constant.CommonStatusConst;
import com.hc.domain.DictItem;
import com.hc.dto.ListDictItemDTO;
import com.hc.vo.DictItemVO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 字典
 *
 * @author 梁云亮
 */
@Mapper
public interface DictItemMapper extends BaseMapper<DictItem> {

    /**
     * 插入字典
     *
     * @param dictItemVO
     * @return
     */
    int insertDictItem(@Param("dictItemVO") DictItemVO dictItemVO);

    /**
     * 批量添加字典项
     *
     * @param list
     * @return
     */
    int batchInsertDictItem(@Param("list") List<DictItemVO> list);

    /**
     * 查询指定名称的字典是否存在
     *
     * @param name
     * @return 存在返回1，不存在返回0
     */
    @Select("SELECT count(*) FROM tb_dict_item WHERE name = #{name} ")
    int selectDictItemByName(@Param("name") String name);

    /**
     * 查询指定字典类型下所有处理显示状态的字典，按level进行排序
     *
     * @param typeId
     * @return
     */
    @Select("SELECT id,name,value FROM tb_dict_item WHERE status = " + CommonStatusConst.POSITIVE + " AND type_id=#{typeId} ORDER BY level")
    List<ListDictItemDTO> selectDictItemByTypeId(@Param("typeId") Integer typeId);

    /**
     * 删除指定id的字典
     *
     * @param id
     * @return
     */
    @Delete("DELETE  FROM tb_dict_item WHERE id=#{id} ")
    int deleteDictItemById(@Param("id") Integer id);

    /**
     * 批量删除字典
     *
     * @param ids
     * @return
     */
    int batchDeleteDictItemsById(@Param("ids") List<Integer> ids);

    /**
     * 更新字典
     *
     * @param id
     * @param dictItemVO
     * @return
     */
    int updateDictItemSelective(@Param("id") Integer id, @Param("dictItemVO") DictItemVO dictItemVO);

    /**
     * 更新字典状态
     *
     * @param id
     * @param status
     * @return
     */
    @Update("UPDATE tb_dict_item SET status = #{status} WHERE id = #{id} ")
    int updateDictItemStatus(@Param("id") Integer id, @Param("status") Integer status);

    /**
     * 更新字典排序
     *
     * @param id
     * @param level
     * @return
     */
    @Update("UPDATE tb_dict_item SET level = #{level} WHERE id = #{id} ")
    int updateDictItemLevel(@Param("id") Integer id, @Param("level") Integer level);
}
